논리 볼륨 관리자
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
논리 볼륨 관리자(LVM)는 여러 물리 볼륨을 묶어 단일 논리 볼륨으로 관리하며, 동적 볼륨 크기 조절, 핫 스와핑을 통한 디스크 관리, 스냅샷 생성, 암호화 등의 기능을 제공하는 리눅스 시스템의 볼륨 관리 기술이다. LVM은 하드 디스크와 파티션 위에 위치하여 하드 드라이브 교체, 재분할 및 백업 관리를 용이하게 한다. LVM은 볼륨 크기 조절, 데이터 마이그레이션, 스냅샷, 태그, 자동 활성화, VG 분할 및 병합 등의 기본 기능을 제공하며, 하이브리드 볼륨, 씬 프로비저닝된 LV, dm-multipath 장치 지원과 같은 고급 기능도 지원한다. 또한, RAID 기능 및 클러스터 환경에서의 고가용성(HA-LVM)을 위한 기능도 제공한다.
더 읽어볼만한 페이지
- 레드햇 소프트웨어 - 매니지IQ
매니지IQ는 IT 부서의 효율적인 운영을 지원하는 소프트웨어로, 셀프 서비스, 규정 준수, 최적화 기능을 제공하며, 다양한 플랫폼을 지원하고 AI, 머신러닝 기술을 활용하여 클라우드 관리 기능을 개선하고 있지만, 기능 부족, 시스템 성능, 보안 취약점 등의 비판도 존재한다. - 레드햇 소프트웨어 - 시그윈
Cygwin은 윈도우에서 유닉스 시스템과 유사한 환경을 제공하는 소프트웨어로, POSIX API 구현 및 다양한 개발 도구를 통해 유닉스 기반 소프트웨어의 개발, 빌드, 실행을 지원한다. - 리눅스 커널 특징 - 커널 기반 가상 머신
커널 기반 가상 머신(KVM)은 리눅스 커널의 가상화 확장 기능으로, CPU와 메모리 가상화를 지원하며 QEMU와 함께 완전한 가상화 솔루션을 구성하고 다양한 관리 도구를 제공한다. - 리눅스 커널 특징 - AppArmor
AppArmor는 리눅스 보안 모듈로, 프로그램의 정상적인 동작을 정의하는 프로필을 통해 비정상적인 행위를 차단하며 SELinux의 대안으로 제시되었으나 보안 취약점, 성능, 설정, 호환성 등에 대한 논란도 있다. - 기억 장치 - EPROM
EPROM은 자외선을 사용하여 내용을 지울 수 있는 읽기 전용 메모리이며, MOSFET의 부유 게이트를 사용하여 데이터를 저장하고, 펌웨어 업데이트가 용이하여 소량 생산에 사용되었으나 EEPROM과 플래시 메모리에 의해 대체되었다. - 기억 장치 - 정적 램
정적 램(SRAM)은 전원이 공급되는 동안 데이터를 저장하며, 갱신 회로가 필요 없고 빠른 접근 속도를 가지는 휘발성 메모리 유형이다.
논리 볼륨 관리자 - [IT 관련 정보]에 관한 문서 | |
---|---|
일반 정보 | |
종류 | 논리 볼륨 관리 소프트웨어 |
운영 체제 | 리눅스, NetBSD |
라이선스 | GPLv2 |
웹사이트 | 공식 웹사이트 |
개발 정보 | |
최초 개발자 | Heinz Mauelshagen |
프로그래밍 언어 | C |
저장소 | 소스 코드 저장소 |
릴리스 정보 | |
최신 버전 | 2.02.160 |
최신 릴리스 날짜 | 2016년 7월 6일 |
2. 용도
LVM은 다음과 같은 용도로 사용된다.
- 여러 물리 볼륨이나 하드 디스크를 단일 논리 볼륨으로 생성하여 동적 볼륨 크기 조절을 가능하게 한다. (RAID 0과 유사하지만, JBOD에 더 가깝다.)
- 핫 스와핑을 통해 디스크를 중단 없이 추가 및 교체하여 대규모 하드 디스크 팜을 관리한다.
- 소규모 시스템에서 설치 시 파티션 크기를 미리 정하지 않고, 필요에 따라 파일 시스템 크기를 조절할 수 있다.
- 논리 볼륨의 스냅샷을 생성하여 일관된 백업을 수행한다.
- 여러 물리 파티션을 하나의 암호로 암호화한다.
LVM은 하드 디스크와 파티션 위에 있는 소프트웨어 계층으로, 하드 드라이브 교체, 재분할 및 백업 관리를 위한 연속성과 사용 편의성을 제공한다.
2. 1. 기본 기능
여러 개의 하드 디스크나 물리 볼륨(PV)을 하나의 논리 볼륨(LV)으로 묶어, 필요에 따라 볼륨 크기를 동적으로 조절할 수 있게 한다. 이는 RAID 0과 유사하지만, JBOD에 더 가깝다.[1] 핫 스와핑을 지원하여 시스템을 중단하지 않고도 디스크를 추가하거나 교체할 수 있다.[1]소규모 시스템에서는 파일 시스템 크기를 미리 예측할 필요 없이, LVM을 통해 필요에 따라 쉽게 크기를 조절할 수 있다.[1] 또한, 논리 볼륨의 스냅샷을 만들어 일관된 백업을 수행할 수 있으며,[1] 여러 물리 파티션을 하나의 암호로 암호화할 수 있다.[1]
2. 2. 고급 기능
- 하이브리드 볼륨은 dm-cache 타겟을 사용하여 생성할 수 있으며, 이를 통해 플래시 기반의 SSD와 같은 하나 이상의 빠른 저장 장치가 하나 이상의 느린 하드 디스크 드라이브의 캐시 역할을 할 수 있다.[8]
- 씬 프로비저닝된 LV는 풀에서 할당될 수 있다.[9]
- 최신 버전의 device mapper에서는 LVM이 device mapper의 나머지 부분과 충분히 통합되어 `lvm.conf`에서 `devices/multipath_component_detection=1`이 설정된 경우 dm-multipath 장치를 지원하는 개별 경로를 무시한다. 이렇게 하면 LVM이 멀티패스 장치 대신 개별 경로에서 볼륨을 활성화하는 것을 방지할 수 있다.[10]
3. 기능
LVM은 다음과 같은 다양한 기능을 제공한다.
=== 기본 기능 ===
- 볼륨 그룹(VG)은 새로운 물리 볼륨(PV)을 흡수하거나 기존 볼륨을 제거하여 온라인으로 크기를 조절할 수 있다.
- 논리 볼륨(LV)은 익스텐트를 연결하거나 익스텐트를 잘라내어 온라인으로 크기를 조절할 수 있다.
- LV는 PV 간에 이동할 수 있다.
- 쓰기 시 복사(CoW) 기능을 활용하여 논리 볼륨의 읽기 전용 스냅샷(LVM1) 또는 읽기/쓰기 스냅샷(LVM2)을 생성할 수 있다.[5]
- LV가 분할을 넘지 않는 한, VG는 ''현장에서'' 분할하거나 병합할 수 있다. 이는 전체 LV를 오프라인 스토리지로 또는 오프라인 스토리지에서 마이그레이션할 때 유용할 수 있다.
- LVM 객체는 관리 편의를 위해 태그를 지정할 수 있다.[6]
- VG 및 LV는 `lvmetad` 데몬을 사용하여 기본 장치를 사용할 수 있게 되면 활성화될 수 있다.[7]
=== RAID 기능 ===
- 논리 볼륨은 RAID 1, RAID 5, RAID 6과 같은 RAID 기능을 포함하도록 생성할 수 있다.[10]
- 전체 논리 볼륨 또는 그 일부는 여러 물리 볼륨(PV)에 걸쳐 RAID 0과 유사하게 스트라이핑될 수 있다.
- RAID 1 백엔드 장치(PV)는 "쓰기 위주"로 구성될 수 있으며, 필요한 경우를 제외하고는 이러한 장치에 대한 읽기를 피할 수 있다.
- RAID 기능을 포함하는 논리 볼륨을 재구성하는 동안 허용 가능한 I/O 성능을 유지하기 위해 복구 속도를 제한할 수 있다.
=== 고가용성 (High Availability) ===
LVM은 여러 호스트 컴퓨터 간에 PV를 보관하는 디스크를 공유하는 클러스터에서도 작동하지만, 락킹 형태를 통해 메타데이터 접근을 중재하기 위한 추가적인 데몬이 필요할 수 있다.
; CLVM
: 분산 락 관리자는 동시 LVM 메타데이터 접근을 중개하는 데 사용된다. 클러스터 노드가 LVM 메타데이터를 수정해야 할 때마다 로컬
clvmd
로부터 권한을 확보해야 하며, clvmd
는 클러스터 내 다른 clvmd
데몬과 지속적으로 통신하며 특정 객체 집합에 대한 락을 획득하려는 의사를 전달할 수 있다.; HA-LVM
: 클러스터 인식은 고가용성 기능을 제공하는 애플리케이션에 맡겨진다. LVM의 경우, HA-LVM은 CLVM을 락킹 메커니즘으로 사용할 수 있거나, 기본 파일 락킹을 계속 사용하고 적절한 태그가 있는 LVM 객체에 대한 접근만 제한하여 "충돌"을 줄일 수 있다. 이 간단한 솔루션은 충돌을 완화하는 대신 피하므로 동시 접근이 허용되지 않아 HA-LVM은 액티브-패시브 구성에서만 유용한 것으로 간주된다.
; lvmlockd
: 2017년 기준으로, 분산 락 관리자에 의존하지 않고 LVM 객체의 락킹을 나머지 LVM에 투명하게 만들어
clvmd
를 대체하도록 설계된 안정적인 LVM 구성 요소이다.[13] 2016년 동안 대규모 개발이 이루어졌다.[14]위에 설명된 메커니즘은 LVM의 스토리지 접근 문제를 해결할 뿐이다. 이러한 LV 위에 선택된 파일 시스템은 자체적으로 클러스터링을 지원하거나 (GFS2 또는 VxFS 등) 한 번에 단일 클러스터 노드에서만 마운트되어야 한다 (액티브-패시브 구성 등).
3. 1. 기본 기능
- 볼륨 그룹(VG)은 새로운 물리 볼륨(PV)을 흡수하거나 기존 볼륨을 제거하여 온라인으로 크기를 조절할 수 있다.
- 논리 볼륨(LV)은 익스텐트를 연결하거나 익스텐트를 잘라내어 온라인으로 크기를 조절할 수 있다.
- LV는 PV 간에 이동할 수 있다.
- 쓰기 시 복사(CoW) 기능을 활용하여 논리 볼륨의 읽기 전용 스냅샷(LVM1) 또는 읽기/쓰기 스냅샷(LVM2)을 생성할 수 있다.[5]
- LV가 분할을 넘지 않는 한, VG는 ''현장에서'' 분할하거나 병합할 수 있다. 이는 전체 LV를 오프라인 스토리지로 또는 오프라인 스토리지에서 마이그레이션할 때 유용할 수 있다.
- LVM 객체는 관리 편의를 위해 태그를 지정할 수 있다.[6]
- VG 및 LV는 `lvmetad` 데몬을 사용하여 기본 장치를 사용할 수 있게 되면 활성화될 수 있다.[7]
3. 2. RAID 기능
- 논리 볼륨은 RAID 1, RAID 5, RAID 6과 같은 RAID 기능을 포함하도록 생성할 수 있다.[10]
- 전체 논리 볼륨 또는 그 일부는 여러 물리 볼륨(PV)에 걸쳐 RAID 0과 유사하게 스트라이핑될 수 있다.
- RAID 1 백엔드 장치(PV)는 "쓰기 위주"로 구성될 수 있으며, 필요한 경우를 제외하고는 이러한 장치에 대한 읽기를 피할 수 있다.
- RAID 기능을 포함하는 논리 볼륨을 재구성하는 동안 허용 가능한 I/O 성능을 유지하기 위해 복구 속도를 제한할 수 있다.
3. 3. 고가용성 (High Availability)
LVM은 여러 호스트 컴퓨터 간에 PV를 보관하는 디스크를 공유하는 클러스터에서도 작동하지만, 락킹 형태를 통해 메타데이터 접근을 중재하기 위한 추가적인 데몬이 필요할 수 있다.; CLVM
: 분산 락 관리자는 동시 LVM 메타데이터 접근을 중개하는 데 사용된다. 클러스터 노드가 LVM 메타데이터를 수정해야 할 때마다 로컬
clvmd
로부터 권한을 확보해야 하며, clvmd
는 클러스터 내 다른 clvmd
데몬과 지속적으로 통신하며 특정 객체 집합에 대한 락을 획득하려는 의사를 전달할 수 있다.; HA-LVM
: 클러스터 인식은 고가용성 기능을 제공하는 애플리케이션에 맡겨진다. LVM의 경우, HA-LVM은 CLVM을 락킹 메커니즘으로 사용할 수 있거나, 기본 파일 락킹을 계속 사용하고 적절한 태그가 있는 LVM 객체에 대한 접근만 제한하여 "충돌"을 줄일 수 있다. 이 간단한 솔루션은 충돌을 완화하는 대신 피하므로 동시 접근이 허용되지 않아 HA-LVM은 액티브-패시브 구성에서만 유용한 것으로 간주된다.
; lvmlockd
: 2017년 기준으로, 분산 락 관리자에 의존하지 않고 LVM 객체의 락킹을 나머지 LVM에 투명하게 만들어
clvmd
를 대체하도록 설계된 안정적인 LVM 구성 요소이다.[13] 2016년 동안 대규모 개발이 이루어졌다.[14]위에 설명된 메커니즘은 LVM의 스토리지 접근 문제를 해결할 뿐이다. 이러한 LV 위에 선택된 파일 시스템은 자체적으로 클러스터링을 지원하거나 (GFS2 또는 VxFS 등) 한 번에 단일 클러스터 노드에서만 마운트되어야 한다 (액티브-패시브 구성 등).
4. 볼륨 그룹 할당 정책
LVM의 볼륨 그룹(VG)은 새 볼륨에 대한 기본 할당 정책을 포함하며, 이는 나중에 `lvconvert -A` 명령어 또는 `vgchange --alloc` 명령어를 통해 변경할 수 있다. LVM은 조각화를 최소화하기 위해 가장 엄격한 정책(연속)부터 시작하여 할당이 성공할 때까지 가장 자유로운 정책으로 진행한다.
RAID 구성에서 대부분의 정책은 각 레그에 개별적으로 적용된다. 예를 들어, LV에 'cling' 정책이 있더라도, 파일 시스템을 확장할 때 RAID 설정의 다른 레그에서 이미 사용 중인 PV을 LVM이 사용하지 않는다. RAID 기능을 갖춘 LV는 각 레그를 서로 다른 PV에 배치하여 다른 PV를 다른 레그에서 사용할 수 없도록 한다. 이것이 유일한 옵션인 경우 LV 확장이 실패한다.
4. 1. 할당 정책 종류
- '''연속(Contiguous)''': 지정된 LV의 모든 LE가 인접하고 순서가 지정되도록 한다. 이는 조각화를 제거하지만 LV의 확장성을 심각하게 감소시킨다.
- '''클링(Cling)''': 새 LE가 LV에서 이미 사용 중인 PV에만 할당되도록 한다. 이는 조각화를 완화하고, 특정 LV의 취약성을 줄이는 데 도움이 될 수 있다. 장치가 다운될 경우 해당 PV에 다른 LV의 익스텐트가 있을 가능성을 줄여준다.
- '''일반(Normal)''': PE를 거의 무차별적으로 선택하지만, 병렬 레그(예: RAID 설정의 레그)가 물리적 장치를 공유하지 않도록 시도한다.
- '''어디든(Anywhere)''': 어떠한 제한도 부과하지 않는다. RAID의 이점 대부분을 훼손하여 격리 요구 사항을 무시하므로 RAID 설정에서 매우 위험하다. 선형 볼륨의 경우 조각화가 증가할 수 있다.
5. 구현
리눅스 커널 2.6 시리즈에서 LVM은 장치 매퍼를 사용하여 구현된다. 장치 매퍼는 가상 블록 장치를 만들고 해당 내용을 다른 블록 장치에 매핑하는 블록 수준 체계이다. LVM 관련 코드는 주로 사용자 공간 도구로 푸시되며, 각 호출 시 매핑을 조작하고 온디스크 메타데이터에서 상태를 재구성한다.
LVM은 I/O 리디렉션 서비스를 다른 볼륨 관리자(EVMS)와 공유할 수 있다.
5. 1. LVM 헤더

각 물리 볼륨의 처음 1MB에는 주로 ASCII로 인코딩된 "LVM 헤더" (또는 "LVM 헤드")라는 구조가 포함되어 있다. 원래 LVM 헤드는 부분적인 하드웨어 고장 시 중복성을 위해 각 PV의 처음 1MB와 마지막 1MB에 기록되었다. 그러나 나중에 처음 1MB로 변경되었다. 각 PV의 헤더는 다른 모든 PV와 LV의 UUID 및 PE에서 LE로의 할당 맵을 포함하여 전체 볼륨 그룹 레이아웃의 전체 복사본이다. 이렇게 하면 PV가 손실된 경우 데이터 복구가 간단해진다.
5. 2. 볼륨 그룹 온라인 과정 ("vgchange")
"vgchange" 도구를 사용하여 볼륨 그룹을 온라인 상태로 만들 수 있다. 이 과정은 다음과 같다.1. 사용 가능한 모든 블록 장치에서 PV(물리 볼륨)를 검색한다.
2. 발견된 각 PV의 메타데이터 헤더를 구문 분석한다.
3. 표시되는 모든 볼륨 그룹의 레이아웃을 계산한다.
4. 온라인 상태로 전환할 볼륨 그룹의 각 LV(논리 볼륨)에 대해 반복한다.
5. 3. PV 간 LV 이동 과정 ("pvmove")
동일한 볼륨 그룹의 PV 간에 온라인 논리 볼륨을 이동하려면 pvmove영어 도구를 사용한다. pvmove영어 도구는 다음 단계를 거친다:1. 대상에 대해 새롭고 비어 있는 장치 매핑을 만든다.
2. 원래 매핑과 대상 매핑에 "미러" 대상을 적용한다. 커널은 "저하된" 모드에서 미러를 시작하고 원래 데이터를 대상에 복사하여 동기화한다.
3. 미러가 동기화되면 원래 매핑을 대상으로 바꾸고 원래 매핑을 삭제한다.
이러한 장치 매퍼 작업은 응용 프로그램이나 파일 시스템이 기본 스토리지가 이동 중임을 인식하지 못하도록 투명하게 수행된다.
6. 주의 사항
- 리눅스 커널 2.6.31 이전 버전에서는 쓰기 장벽이 지원되지 않았다(2.6.33 버전에서 완전히 지원됨). 이는 ext3 및 XFS와 같은 저널 파일 시스템이 제공하는 파일 시스템 손상 방지 기능이 일부 상황에서 무효화되었음을 의미한다.[15][16]
- LVM에는 온라인 또는 오프라인 조각 모음 프로그램이 존재하지 않는다. 볼륨 확장 시에만 조각화가 발생하며, 위에서 언급한 할당 정책을 적용하면 어느 정도 완화된다. 하지만 조각화는 여전히 발생하며, 이를 줄이려면 인접하지 않은 익스텐트를 식별하고 `pvmove` 명령을 사용하여 수동으로 재정렬해야 한다.[17]
- 대부분의 LVM 설정에서 LVM 헤드의 사본은 각 PV에 하나만 저장되므로, 볼륨이 디스크 섹터 오류에 취약해질 수 있다. 이 동작은 `vgconvert --pvmetadatacopies` 명령으로 재정의할 수 있다. LVM이 첫 번째 사본을 사용하여 적절한 헤더를 읽을 수 없는 경우, 볼륨 끝에서 백업 헤더를 확인한다. 대부분의 리눅스 배포판은 `/etc/lvm/backup`에 실행 중인 백업을 유지하므로, `vgcfgrestore` 명령을 사용하여 손상된 LVM 헤더를 수동으로 다시 작성할 수 있다.
참조
[1]
웹사이트
LVM README
https://ftp.gwdg.de/[...]
2014-06-25
[2]
웹사이트
7.1.2 LVM Configuration with YaST
https://www.suse.com[...]
SUSE
2015-05-22
[3]
웹사이트
HowTo: Set up Ubuntu Desktop with LVM Partitions
https://help.ubuntu.[...]
Ubuntu
2015-05-22
[4]
웹사이트
9.15.4 Create LVM Logical Volume
https://access.redha[...]
Red Hat
2015-05-22
[5]
웹사이트
BTRFS performance compared to LVM+EXT4 with regards to database workloads
https://blog.pythian[...]
2018-05-29
[6]
웹사이트
Tagging LVM2 Storage Objects
https://www.suse.com[...]
Micro Focus International
2015-05-21
[7]
웹사이트
The Metadata Daemon
https://access.redha[...]
Red Hat Inc
2015-05-22
[8]
웹사이트
Using LVM's new cache feature
https://rwmj.wordpre[...]
2014-07-11
[9]
웹사이트
2.3.5. Thinly-Provisioned Logical Volumes (Thin Volumes)
https://access.redha[...]
Access.redhat.com
2014-06-20
[10]
웹사이트
4.101.3. RHBA-2012:0161 — lvm2 bug fix and enhancement update
https://access.redha[...]
2014-06-08
[11]
웹사이트
5.4.16. RAID Logical Volumes
https://access.redha[...]
Access.redhat.com
2017-02-07
[12]
웹사이트
Controlling I/O Operations on a RAID1 Logical Volume
https://access.redha[...]
redhat.com
2014-06-16
[13]
웹사이트
Re: LVM snapshot with Clustered VG [SOLVED]
https://www.spinics.[...]
2015-06-08
[14]
웹사이트
"vmlockd.c git history"
https://sourceware.o[...]
[15]
웹사이트
Bug 9554 – write barriers over device mapper are not supported
https://bugzilla.ker[...]
2010-01-24
[16]
웹사이트
Barriers and journaling filesystems
https://lwn.net/Arti[...]
LWN
2008-05-28
[17]
웹사이트
will pvmove'ing (an LV at a time) defragment?
https://www.redhat.c[...]
2015-05-22
[18]
웹사이트
Gotchas
https://btrfs.wiki.k[...]
btrfs Wiki
2017-04-24
[19]
웹인용
LVM README
http://ftp.gwdg.de/p[...]
2014-06-25
[20]
웹인용
'[lvm-devel] v2_02_151 annotated tag has been created'
https://www.redhat.c[...]
Red Hat
2016-04-23
[21]
웹인용
7.1.2 LVM Configuration with YaST
https://www.suse.com[...]
2015-05-22
[22]
웹인용
HowTo: Set up Ubuntu Desktop with LVM Partitions
https://help.ubuntu.[...]
2015-05-22
[23]
웹인용
9.15.4 Create LVM Logical Volume
https://access.redha[...]
2015-05-22
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com